package behavioralPattern.chain_of_responsibility.example02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 审核申请接口
 */
public class AuthController {
    /**
     * 审核方法
     * @param name      申请人姓名
     * @param orderId   申请单id
     * @param date      申请时间
     * @return AuthInfo
     */
    public AuthInfo doAuth(String name, String orderId, Date date) throws ParseException {
        Date date_1 = null;
        // 三级审批
        // 查询当前节点是否已审批
        // 虚拟一个id：1003
        date_1 = AuthService.queryAuthInfo("1003", orderId);
        if (date_1 == null){
            return new AuthInfo("0003","单号：" + orderId,"状态：三级待审批");
        }

        // 二级审批
        // 查询当前节点是否已审批
        // 虚拟一个id：1002
        // 二级审批节点的时间范围：11-01 ~ 11-10
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        if (date.after(format.parse("2023-10-31")) && date.before(format.parse("2023-11-11"))){

            date_1 = AuthService.queryAuthInfo("1002", orderId);
            if (date_1 == null){
                return new AuthInfo("0002","单号：" + orderId,"状态：二级待审批");
            }
        }


        // 一级审批
        // 查询当前节点是否已审批
        // 虚拟一个id：1001
        // 三级审批节点的时间范围：11-11 ~ 11-30
        if (date.after(format.parse("2023-11-11")) && date.before(format.parse("2023-11-30"))){

            date_1 = AuthService.queryAuthInfo("1001", orderId);
            if (date_1 == null){
                return new AuthInfo("0001","单号：" + orderId,"状态：一级待审批");
            }
        }
        return new AuthInfo("0000","单号：" + orderId,"状态：审批通过,申请人：" + name);
    }
}


